package com.ruoyi.system.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.system.domain.ItemDesc;
import com.ruoyi.system.mapper.ItemMapper;
import com.ruoyi.system.domain.Item;
import com.ruoyi.system.service.IItemService;

/**
 * 商品Service业务层处理
 * 
 * @author ruoyi
 * @date 2022-04-24
 */
@Service
public class ItemServiceImpl implements IItemService 
{
    @Autowired
    private ItemMapper itemMapper;

    /**
     * 查询商品
     * 
     * @param id 商品主键
     * @return 商品
     */
    @Override
    public Item selectItemById(Long id)
    {
        return itemMapper.selectItemById(id);
    }

    /**
     * 查询商品列表
     * 
     * @param item 商品
     * @return 商品
     */
    @Override
    public List<Item> selectItemList(Item item)
    {
        return itemMapper.selectItemList(item);
    }

    /**
     * 新增商品
     * 
     * @param item 商品
     * @return 结果
     */
    @Transactional
    @Override
    public int insertItem(Item item)
    {
        int rows = itemMapper.insertItem(item);
        insertItemDesc(item);
        return rows;
    }

    /**
     * 修改商品
     * 
     * @param item 商品
     * @return 结果
     */
    @Transactional
    @Override
    public int updateItem(Item item)
    {
        itemMapper.deleteItemDescById(item.getId());
        insertItemDesc(item);
        return itemMapper.updateItem(item);
    }

    /**
     * 批量删除商品
     * 
     * @param ids 需要删除的商品主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteItemByIds(Long[] ids)
    {
        itemMapper.deleteItemDescByIds(ids);
        return itemMapper.deleteItemByIds(ids);
    }

    /**
     * 删除商品信息
     * 
     * @param id 商品主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteItemById(Long id)
    {
        itemMapper.deleteItemDescById(id);
        return itemMapper.deleteItemById(id);
    }

    /**
     * 新增商品详情信息
     * 
     * @param item 商品对象
     */
    public void insertItemDesc(Item item)
    {
        List<ItemDesc> itemDescList = item.getItemDescList();
        Long id = item.getId();
        if (StringUtils.isNotNull(itemDescList))
        {
            List<ItemDesc> list = new ArrayList<ItemDesc>();
            for (ItemDesc itemDesc : itemDescList)
            {
                itemDesc.setId(id);
                list.add(itemDesc);
            }
            if (list.size() > 0)
            {
                itemMapper.batchItemDesc(list);
            }
        }
    }
}
